package com.koron.css2.clientCenter.mapper;

import com.koron.css2.clientCenter.bean.*;
import com.koron.css2.clientCenter.queryBean.ReuseUserQueryBean;
import com.koron.css2.clientCenter.queryBean.UserChangeItemQueryBean;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 用户信息变更
 *
 * @author 甄玉晴
 */
public interface ChangeUserMapper {
    /**
     * 变更初始化列表
     *
     * @param bean
     * @return
     */
    public List<UserChangeListBean> userChangeList(ReuseUserQueryBean bean);

    /**
     * 变更单据增加
     *
     * @param bean
     * @return
     */
    public Integer userChangeAdd(UserChangeBean bean);
    
    /**
     * 单据主键
     * @param receiptId
     * @return
     */
    public int deleteByReceiptId(String receiptId);

    /**
     * 删除变更信息
     *
     * @param id
     * @return
     */
    public Integer userChangeDelete(String id);

    /**
     * 修改变更信息
     *
     * @param bean
     * @return
     */
    public Integer userChangeUpdate(UserChangeBean bean);

    /**
     * 根据Id查询变更信息
     *
     * @param id
     * @return
     */
    public UserChangeBean getUserChangeInfoById(String id);

    /**
     * 根据用户编号判断是否有未审核完的单据
     *
     * @param id
     * @return
     */
    public String getUserChangeInfoByUserNo(@Param("userNo") String userNo);

    /**
     * 根据Id查询变更人口信息
     *
     * @param id
     * @return
     */
    public List<UserChangePersonBean> getUserChangePersonById(String id);

    /**
     * 根据证件号码查询变更人口信息
     *
     * @param id
     * @return
     */
    public List<UserChangePersonBean> getUserChangePersonByCertNo(@Param("certNos") List<String> certNos, @Param("userNo") String userNo);

    /**
     * 变更人口表增加
     *
     * @param bean
     * @return
     */
    public Integer userChangePersonAdd(UserChangePersonBean bean);

    /**
     * 删除变更人口信息
     *
     * @param id
     * @return
     */
    public Integer userChangePersonDelete(String changeId);

    /**
     * 修改变更人口信息
     *
     * @param bean
     * @return
     */
    public Integer userChangePersonUpdate(UserChangePersonBean bean);

    /**
     * 增加变更事项
     * //temp:1：正式表 ，2临时表
     */
    public Integer userChangeItemAdd(@Param("list") List<UserChangeItemBean> list, @Param("temp") int temp);

    /**
     * 删除变更事项
     * //temp:1：正式表 ，2临时表
     */
    public Integer userChangeItemDelete(@Param("receiptId") String receiptId, @Param("temp") int temp);

    /**
     * 查询单据id变更事项
     * temp:1：正式表 ，2临时表
     */
    public List<UserChangeItemBean> selectUserChangeItem(@Param("bean") UserChangeItemQueryBean bean, @Param("temp") int temp, @Param("ctmNo") String ctmNo);

    /**
     * 根据id将临时数据更新到正式
     *
     * @param receiptId
     * @return
     */
    public Integer userChangeItemfromTemp(@Param("receiptId") String receiptId);

    public String userCtmNoQuery(@Param("userNo") String userNo);
    
    /**
     * 获取容量水价
     * @param bean
     * @return
     */
    public HashMap<String, Object> getCapaMoney(@Param("bean") CapaMoneyConfigBean bean);
    
    public List<Map<String,Object>> getUserChangeInfo(@Param("receiptId") String receiptId);

    /**
     * 根据id查询变更记录
     *
     * @param receiptId
     * @return
     */
    public List<UserChangeItemBean> selectChangeItemfromTemp(@Param("receiptId") String receiptId,@Param("userNo") String userNo);

    //获取用户、客户、账户表字段
    List<String> selectTableColumns(String tableName,String dataBaseName);

    List<String> selectUserNoGroupByBillId(String billId);
}
